package com.jeff.learn.greedy;

import java.util.Collections;
import java.util.stream.IntStream;

/**
 * <p>
 * 输入一个数组，数组中的元素代表三角形的三条边长，
 * 输出可以构成三角形的最大周长。
 * </p>
 * <p>
 * 输入：[5, 5, 3, 1, 4]
 * 输出：14
 * </p>
 *
 * @author yaojianfeng
 */
public class MaxPerimeterTriangle {
    public static int findMaxPerimeter(int[] nums) {
        // 对int数组进行快速降序排序
        int[] newArr = IntStream.of(nums).boxed().sorted(Collections.reverseOrder())
                .mapToInt(Integer::intValue).toArray();

       // 遍历数组，找到可以构成三角形的三个数，返回它们的和
        for (int i = 0; i < newArr.length - 2; i++) {
            if (newArr[i] < newArr[i + 1] + newArr[i + 2]) {
                System.out.println("三条边分别是: "+newArr[i] + " " + newArr[i + 1] + " " + newArr[i + 2]);
                return newArr[i] + newArr[i + 1] + newArr[i + 2];
            }
        }
        // 如果没有找到可以构成三角形的三个数，返回0
        return 0;
    }

    public static void main(String[] args) {
        int[] nums = {5, 5, 3, 1, 4};
        System.out.println(findMaxPerimeter(nums));
    }
}
